package com.murphy.algorithm.likou;

/**
 * n的x次方
 * @author dongsufeng
 * @version 4.0
 * @date 2023/2/23 15:56
 */
public class Pow {

    public int pow1(int n , int x){
        if (x==0){
            return 1;
        }
        int result=pow(n,x/2);
        result *= result;
        if (x % 2 !=0){
            result *= n;
        }
        return result;
    }

    public int pow(int n , int x){
       //分治法，可以x/2分为左右一样的两端，求一段
        if (x == 0){
            return 1;
        }
        int mid = x / 2;
        int result = pow(n,mid);
        result = result * result;
        if (x % 2 > 0){
            result = result * n;
        }
        return result;

    }

    public static void main(String[] args) {
        Pow p = new Pow();
        System.out.println(p.pow(2,11));
    }
}
